package com.xiaoc.bulldozer.common.service;

import java.util.List;
import java.util.Set;

import com.xiaoc.bulldozer.common.dto.AwardPartnerDto;
import com.xiaoc.bulldozer.common.dto.AwardPartnerQueryDto;
import com.xiaoc.bulldozer.common.model.AwardPartner;

/**
 * AwardPartner Service 接口
 * 
 * @author Danfo Yam
 * 
 * @date 2018-08-24 15:47:58
 */
public interface AwardPartnerService {

    /**
     * 根据条件查询AwardPartner数量
     
     * @param AwardPartnerQueryDto
     *
     * @return 满足查询条件的记录数量
     */
    public Integer getAwardPartnerCountByCondition(AwardPartnerQueryDto awardPartnerQueryDto);
    
    /**
     * 根据条件分页查询AwardPartner列表
     *
     * @param AwardPartnerQueryDto
     *
     * @return 满足查询条件的AwardPartner列表
     */
    public List<AwardPartner> getAwardPartnerListByCondition(AwardPartnerQueryDto awardPartnerQueryDto);
    
    /**
     * 根据Id获取AwardPartner
     * 
     * @param id
     *
     * @return AwardPartner对象
     */
    public AwardPartner getAwardPartnerById(Integer id);

    /**
     * 获取所有AwardPartner列表
     * 
     * @return AwardPartner列表
     */
    public List<AwardPartner> getAllAwardPartnerList();

    /**
     * 新增AwardPartner
     * 
     * @param awardPartner
     *
     * @return void
     */
    public void save(AwardPartner awardPartner);

    /**
     * 更新AwardPartner
     * 
     * @param awardPartner
     *
     * @return void
     */
    public void update(AwardPartner awardPartner);

    /**
     * 根据Id删除AwardPartner
     * 
     * @param id
     *
     * @return void
     */
    public void deleteById(Integer id);


    /**
     * 根据userId和awardId集合获取成功注册人数
     * @param userId
     * @param awardIds
     * @return 成功注册人数
     */
    public int getRegistSuccessCountByUserIdAndAwardIds(Integer userId, Set<Integer> awardIds);


    /**
     *根据AwardId和UserId 获取点赞列表
     * @param awardId
     * @param userId
     * @return
     */
    public List<AwardPartnerDto> getPartnerListByAwardIdAndUserId(Integer awardId, Integer userId);

    /**
     * 根据userId 获取点赞列表
     * @param userId
     * @return
     */
    public List<AwardPartnerDto> getAllPartnerListByUserId(Integer userId);
    
    /**
     * 根据userId 获取点赞人数
     */
    public Integer getAllPartnerListCountByUserId(Integer userId);

    public Integer getSuccessPartnerByUserId(Integer partnerUserId);

    /**
     * 根据userId，PartnerUserId 获取AwardPartner
     * @param userId
     * @param partnerUserId
     * @return
     */
    public AwardPartner getAwardPartnerByUserIdAndPartnerUserId(Integer userId, Integer partnerUserId);

    /**
     * 根据userId，分页信息 获取 AwardPartnerDto 集合
     * @param awardPartnerQueryDto
     * @return
     */
    public List<AwardPartnerDto> getAllPartnerListByUserIdAndPage(AwardPartnerQueryDto awardPartnerQueryDto);


    /**
     * 根据partnerUserId 获取最新一条点赞信息
     * @param partnerUserId
     * @return
     */
    public AwardPartner getRecentAwardPartnerByPartnerUserId(Integer partnerUserId);



    /**
     *  通过红包id查询点赞人数
     * @param awardId
     * @return
     */
    public int getAwardPartnerByAwardId(Integer awardId);

    /**
     * 根据红包ID和点赞人ID查看用户是否给该红包点过赞
     * @param award_id
     * @param partnerUserId
     * @return
     */
    public AwardPartner getRecentAwardPartnerByPartnerUserIdOne(AwardPartner awardPartner);

    public List<AwardPartnerDto> getAwardPartnerList(Integer awardId);
}
